1. Technical Field
The present invention relates to data processing systems in general and in particular to a method and apparatus for handling service requests in data processing systems. Still more particularly, the present invention relates to a method and apparatus for handling service requests in a data processing system by enabling clients differentiations while satisfying different service level agreements.
2. Description of Related Art
A clustered server system typically receives millions of requests coming from multiple clients concurrently. Each client may have different operational goals and guarantee service levels based on its service level agreement (SLA). Because requests from one client may also have different levels of importance, each request needs to be handled differently according to the SLA requirements of the corresponding client.
Before requests reach a clustered server system, they are initially handled by routers, such as on-demand routers (ODRs). An ODR classifies requests into service groups having different operational goals and requirements, such as timeout value, response time, importance, thresholds, etc. After classifying incoming requests into several service groups with different operational goals and requirements, the ODR routes the requests accordingly.
With concurrent processing being used in clustered server systems, data lock mechanisms must be utilized to ensure data integrity. However, all prior art lock mechanisms cannot account for classification, cannot enforce response time, and cannot be timeout conscious to rearrange waiting queue. Thus, the above-mentioned ODR approach for meeting different operational goals sometimes does not work because it cannot resolve different data tier and cache tier problems.
Quite often, data tier and cache tier are the biggest limitation for clients to meet their own operational goals. When different classes of users are trying to access the same data, and since data tier is fixed and cannot be shrunk and expanded, the same data can be locked by a low-class request while a high-class request has to wait for a lock to be released by the low-class request.
Since a low-class request may hold a lock such that a high-class request cannot access data in a server, a transactional local or remote cache, a databases, etc., an SLA may be violated due to certain operational requirements not being met. For example, if request1 and request2 are received at about the same time, with request1 being a low-class request (e.g., importance=7, response time=5 minutes, timeout=30 minutes, threshold=90%, SLA=50% 3 minutes) and request2 being a high-class request (e.g., importance=1, response time=2 seconds, timeout=5 seconds, SLA=100% 1.5 seconds); and if request1, which needs 10 seconds to complete, is received 0.05 seconds earlier than request2, then request1 will hold locks in a database server and a server cache, and request2 has to wait for the locks to be released by request1. If timeout occurs before request2 can get the locks, the condition of the SLA for request2 is violated.
Consequently, it would be desirable to provide an improved method and apparatus for handling service requests in a data processing system; especially for concurrent data accesses by different kinds of clients with different SLAs.